Фрагментация и сборка

Поле Internet идентификации (ID) используется вместе с Адресами отправителя и получателя, полями протокола для идентификации фрагментов датаграммы при сборке.

Бит флага More Fragments (MF) устанавливается, если датаграмма не является последним фрагментом. Поле Fragment Offset идентифицирует расположение фрагмента относительно начала в первоначальной нефрагментированной датаграмме. Единица измерения - 8 октетов. Стратегия фрагментации разработана так, чтобы нефрагментированная датаграмма имела нули во всех полях с информацией о фрагментации (MF=0, Fragment Offset=0). Если же Internet датаграмма фрагментируется, то выделение информации производится кусками и по границе 8 октет.

Данный формат позволяет использовать 2**32=8192 фрагментов по 8 октетов каждый, а в целом 65536 октетов. Заметим, что это совпадает со значением поля общей длины для датаграммы (конечно, заголовок учитывается в общей длине датаграммы, но не фрагментов).

Когда происходит фрагментация, то некоторые опции копируются, а другие остаются лишь в первом фрагменте.

Каждый Internet модуль должен быть способен передать датаграмму из 68 октетов без дальнейшей фрагментации. Это происходит потому, что Internet заголовок может включать до 60 октетов, а минимальный фрагмент - 8 октетов. Каждый Internet - получатель должен быть в состоянии принять датаграмму из 576 октетов в качестве единого куска, либо в виде фрагментов, подлежащих сборке.

Процесс фрагментации может повлиять на предыдущие поля

   (1) - поле опций
   (2) - флаг "more fragments"
   (3) - смещение фрагмента
   (4) - поле длины Internet заголовка
   (5) - поле общей длины
   (6) - контрольная сумма заголовка

Если бит флага запрета фрагментации (Don't Fragment – DF) установлен, то Internet фрагментация данной датаграммы запрещена, даже если она может быть разрушена. Данное средство может использоваться для предотвращения фрагментации в тех случаях, когда хост-получатель не имеет достаточных ресурсов для сборки Internet фрагментов.

Одним из примеров использования средства запрета фрагментации должна служить линия, ведущая к малому хосту. Маленький хост может иметь фиксированную загрузочную программу, которая принимает датаграмму, помещает в памяти, а затем исполняет ее.

Процедуры фрагментации и сборки наиболее просто описываются примерами. Следующие процедуры являются учебными реализациями. В следующих псевдопрограммах принимается следующая нотация:

"=<" означает "меньше или равно", "#" означает "не равно", "=" означает "равно", "<-" означает "устанавливается в". Кроме этого, "с x по y" означает включительно по x, но не включая y. К примеру, выражение "с 4 по 7" означало бы включение 4,5 и 6, но не включало бы 7.

Hosted by uCoz